package one.stand.service.impl;

import one.stand.advice.ResultEnum;
import one.stand.mapper.CompanyShowroomMapperExt;
import one.stand.model.CompanyShowroom;
import one.stand.service.CompanyShowroomService;
import one.stand.util.AssertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Objects;

@Service
public class CompanyShowroomServiceImpl implements CompanyShowroomService {

    @Autowired
    private CompanyShowroomMapperExt companyShowroomMapperExt;

    @Override
    @Transactional
    public void save(CompanyShowroom companyShowroom) {
        if (Objects.nonNull(companyShowroom.getId())) {
            CompanyShowroom companyShowroomUpdate = companyShowroomMapperExt.selectByPrimaryKey(companyShowroom.getId());
            companyShowroomUpdate.setBackground(companyShowroom.getBackground());
            companyShowroomUpdate.setShowVideo(companyShowroom.getShowVideo());
            companyShowroomUpdate.setShowCode(companyShowroom.getShowCode());
            companyShowroomUpdate.setVideo(companyShowroom.getVideo());
            companyShowroomUpdate.setVrUrl(companyShowroom.getVrUrl());
            companyShowroomUpdate.setUpdateTime(null);
            companyShowroomMapperExt.updateByPrimaryKeySelective(companyShowroomUpdate);
        } else {
            AssertUtil.nonNull(companyShowroom.getCompanyId(), ResultEnum.PARAM_CHECK);
            companyShowroomMapperExt.insertSelective(companyShowroom);
        }
    }

    @Override
    @Transactional
    public void updateVrUrl(Integer companyId, String vrUrl) {
        CompanyShowroom companyShowroom = getByCompanyId(companyId);
        if (Objects.nonNull(companyShowroom)) {
            companyShowroom.setVrUrl(vrUrl);
            companyShowroom.setUpdateTime(null);
            companyShowroomMapperExt.updateByPrimaryKey(companyShowroom);
        } else {
            companyShowroom = new CompanyShowroom();
            companyShowroom.setCompanyId(companyId);
            companyShowroom.setVrUrl(vrUrl);
            companyShowroom.setShowVideo(SHOW_VIDEO_ON);
            companyShowroom.setShowCode(SHOW_CODE_OFF);
            save(companyShowroom);
        }
    }

    @Override
    public CompanyShowroom getByCompanyId(Integer companyId) {
        return companyShowroomMapperExt.selectByCompanyId(companyId);
    }
}
